<?php

//1、普通函数调用
function sayHello($name)
{
    return "Hello $name!";
}

//这里第一个参数是需要 调用的方法或类名的方法，第二个后为方法或类目的参数
$result =call_user_func('sayHello','张三','李四');      //sayHello 只有一个 参数，所以第三个参数无用;
echo $result;

// 2. 调用类静态方法
class MathUtils {
    public static function add($a, $b) {
        return $a + $b;
    }
}

$result = call_user_func(['MathUtils', 'add'], 5, 3);
echo $result; // 输出: 8

// 3. 调用对象方法
class Greeter {
    public function greet($name, $time = 'day') {
        return "Good $time, $name!";
    }
}

$greeter = new Greeter();
$result = call_user_func([$greeter, 'greet'], '李四', 'morning');
echo $result; // 输出: Good morning, 李四!

// 4. 使用 ::class 语法
$result = call_user_func([MathUtils::class, 'add'], 10, 20);
echo $result; // 输出: 30


//call_user_func_array 用法一样只是参数2为数组